package com.mushuilingfeng.ddd.user.service;

import com.mushuilingfeng.ddd.user.domain.user.entity.User;
import com.mushuilingfeng.ddd.user.vo.LoginToken;

/**
 * @author
 * @date 2024/9/30
 */
public interface ITokenService {
    
    /**
     * 授权
     *
     * @param user     用户
     * @param clientId 客户端
     * @return LoginToken
     */
    LoginToken authenticate(User user, String clientId);
    
    User getUserByToken(String token);
    
    LoginToken reNewToken(String refreshToken);
    
    void deleteToken(String token);
    
    /**
     * 使用户已经获取的Token失效
     *
     * @param userId 用户ID
     */
    void invalidateUserToken(Long userId);
}
